Projekt Pronal Projekt Pronal

Kazalo:
Sofinasiranje projekta
Starejši - zbirka nalog...
Tekmovanja...
Tekmovanja - dopolni...
Tekmovanja - Parsons...
Tekmovanja - popravi...
Starejši - učbenik
Funkcije
If stavek
Izpisi
Množice
Nizi
Pisanje in popravljanje programa
Seznami in nizi
Slovarji
Spoznajmo Python
Uvod v funkcije
Zanka for
Zanka while
Zanka while

Zanka while


Zanka while - kratka razlaga

Zanka while je po svoji sestavi zelo podobna if stavku. V grobem izgleda takole:

while pogoj:
    ukaz1
    ukaz2
    ...
    continue
    ...
    break
    ...
else:
    ukaz
    ...

Če je pogoj izpolnjen, se izvede blok ukazov, ki so ustrezno zamaknjeni. Ko se blok izvede se vrnemo ponovno na pogoj in ga preverimo. Če je ponovno izpolnjen se blok ponovno izvede. Zanka se preneha izvajati, ko pogoj prvič ni izpolnjen. Primeru, ko je pogoj vedno izpolnjen rečemo neskončna zanka (npr. while True:) Z ukazom break znotraj bloka pri while delu izstopimo iz zanke, medtem ko z ukazom continue znotraj while bloka izpustimo preostali del bloka in se takoj vrnemo na začetek (preverimo pogoj). Zanka while pa ima tudi else del. Ta se izvede v primeru, ko iz zanke ne izstopimo s pomočjo ukaza break, vendar ni obvezen.


Zanka while - naloge

1. podnaloga

Naloga je osnovana na nalogi iz

https://lusy.fri.uni-lj.si/ucbenik/book/1203/index9.html

Želimo izpisati števila od 100 do 1 v padajočem vrstnem redu. Zapišite program, ki to naredi s pomočjo zanke while.. Izpis:

  100
  99
  98
  ...
  1

Uradna rešitev

#

i = 100
while i > 0:
    print(i)
    i = i - 1

2. podnaloga

Sestavite funkcijo sestej(st), ki sešteje števila od 1 do st.

>>> sestej(3)
6
>>> sestej(5)
15

Uradna rešitev

def sestej(st):
    '''Sešteje števila od 1 do st.'''
    i = 1
    v = 0
    while i <= st:
        v += i
        i += 1

    return v

3. podnaloga

V bobnu za loto imamo kroglice označene s številkami od $1$ do $10$ (vsaka številka le enkrat). Napišite funkcijo zreb(n), ki izvede simulacijo n - tih naključnih žrebov in vrne število izžrebanih $10$. Pomagajte si s knjižnico random.

Uradna rešitev

import random
def zreb(n):
    """Vrne število izžrebanih 10 v n poskusih."""
    koliko10 = 0
    i = 0
    while i < n:
        i += 1
        izzrebana = int(random.randint(1, 10))
        if izzrebana == 10:
            koliko10 += 1
    return koliko10

4. podnaloga

Napišite še funkcijo zreb2(), ki izvede simulacijo žrebanja in vrne število žrebov preden prvič izžrebamo število $8$ (tistega žreba, ko izžrebamo $8$ ne upoštevamo več). Če vmes izžrebamo število $1$, naj funkcija vrne $-1$. Poskušajte čim več funkcije napisati znotraj ene while zanke. Pomagaj si s knjižnico random in break ter else delom while zanke.

Uradna rešitev

import random
def zreb2():
    '''vrne število žrebov do prve 8, če pa izžrebamo 1 vrne -1'''
    koliko = 0
    izzrebana = 0
    while izzrebana != 1:
        izzrebana = int(random.randint(1, 10))
        if izzrebana != 8:
            koliko += 1
        else:
            return koliko
    else:
        return -1
Mesto objave ob koncu projekta 15.9.2018